"use strict"
const Controller = require("egg").Controller
const fs = require("fs")
var moment = require("moment")

class HomeController extends Controller {
  test() {
    console.log("test")
    this.app.mysql.insert("test", { name: "liangshaojei" })
    this.ctx.body = "test"
  }
  // 单张截图上传
  screenshotUpload(item) {
    const { ctx } = this
    return new Promise(async (resolve, reject) => {
      try {
        console.log("init::::" + item.id)
        // 复制链接成功
        var handerUrl = item.video_url.replace(">>", "\\>\\>").replace(" ", "")
        console.log(handerUrl)
        await ctx.service.adbUtil.copyUrl(handerUrl)
        // 打开软件
        // await ctx.service.adbUtil.openSoft(item)

        // 打开软件（点击图标）
        await ctx.service.util.sleep(2000)
        console.log(item.media_name)
        if (item.media_name === "快手") {
          await ctx.service.adbUtil.tap("993", "508") //p30
          // await ctx.service.adbUtil.tap("757", "1026") //模拟器
        } else if (item.media_name === "抖音") {
          await ctx.service.adbUtil.tap("686", "225") //p30
          // await ctx.service.adbUtil.tap("540", "1204") //模拟器
        } else if (item.media_name === "火山") {
          await ctx.service.adbUtil.tap("921", "232") //p30
        }

        // 去详情页面
        await ctx.service.util.sleep(2000)
        if (item.media_name === "快手") {
          await ctx.service.adbUtil.tap("540", "1625") //p30
          // await ctx.service.adbUtil.tap("527", "1258") //模拟器
        } else if (item.media_name === "抖音") {
          await ctx.service.adbUtil.tap("560", "1537") //p30
          // await ctx.service.adbUtil.tap("540", "1204") //模拟器
        } else if (item.media_name === "火山") {
          await ctx.service.adbUtil.tap("522", "1425") //p30
        }

        // 点赞
        await ctx.service.util.sleep(2000)
        if (item.media_name === "快手") {
          await ctx.service.adbUtil.tap("205", "157") //p30
          // await ctx.service.adbUtil.tap("136", "99") //模拟器
        } else if (item.media_name === "抖音") {
          await ctx.service.adbUtil.tap("990", "1330") //p30
          // await ctx.service.adbUtil.tap("1022", "1246") //模拟器
        } else if (item.media_name === "火山") {
          await ctx.service.adbUtil.tap("985", "1580") //p30
        }

        // 截屏上传
        await ctx.service.util.sleep(2000)
        await ctx.service.adbUtil.screenshot(item)
        // 返回首页
        await ctx.service.util.sleep(1000)
        await ctx.service.adbUtil.goBackHOme(item)

        await ctx.service.util.sleep(2000)
        console.log("end::::" + item.id)
        resolve(1)
      } catch (err) {
        reject(err)
        console.log(err.toString())
      }
    })
  }
  // 处理图片
  async handerImages() {
    const taskArr = this.ctx.request.body.data
    console.log(taskArr.length)
    while (taskArr.length > 0) {
      var item = taskArr.pop()
      try {
        await this.screenshotUpload(item)
      } catch (err) {
        console.log(err)
      }
    }
    console.log("while循环做完了")
  }
  // 截图
  async screenshot() {
    await this.ctx.service.adbUtil.screenshot({})
    this.ctx.body = {
      code: 0,
      msg: ""
    }
  }
  // 渲染已经完成的任务
  async viewGetAllDone() {
    await this.ctx.render("getAllDone")
  }
  // 渲染首页
  async index() {
    await this.ctx.render("index")
  }

  async getAllDone() {
    var results = await this.app.mysql.select("task")
    this.ctx.body = {
      code: 0,
      data: results,
      msg: ""
    }
  }
  // 获取可以领任务的ID
  async getCanDoTask() {
    const { ctx } = this
    var taskArray1 = []
    var taskArray2 = []
    var taskArray3 = []
    // 抖音任务
    taskArray1 = await this.ctx.service.task.checkCanGetTask("抖音")
    await ctx.service.util.sleep(1000)
    if (taskArray1.length < 5) {
      // 快手任务
      taskArray2 = await this.ctx.service.task.checkCanGetTask("快手")
      await ctx.service.util.sleep(1000)
      if (taskArray2.length < 5) {
        // 火山任务
        taskArray3 = await this.ctx.service.task.checkCanGetTask("火山")
        await ctx.service.util.sleep(1000)
      }
    }

    var taskArray = [...taskArray1, ...taskArray2, ...taskArray3]
    console.log(taskArray)
    taskArray.forEach((item, index) => {
      if (index < 5) {
        item.LAY_CHECKED = true
      }
    })
    ctx.body = {
      code: 0,
      data: taskArray,
      msg: ""
    }
  }
  // 渲染页面
  async viewDoTask() {
    await this.ctx.render("doTask")
  }
  // 只做数据
  async makeTaskData() {
    var taskData = await this.ctx.service.task.makeTaskData()
    taskData.forEach((item, index) => {
      item.LAY_CHECKED = true
    })
    this.ctx.body = {
      code: 0,
      data: taskData,
      msg: ""
    }
  }
  // 根据ids去接单  接口
  async getTask() {
    const ids = this.ctx.request.body
    var successIdArray = []
    while (ids.length > 0) {
      try {
        var id = ids.pop()
        var successId = await this.ctx.service.task.getTack(id)
        await ctx.service.util.sleep(2000)
        successIdArray.push(successId)
      } catch (err) {
        console.log("领去任务出粗了")
      }
    }
    this.ctx.body = {
      code: 1,
      successIdArray
    }
  }
  // 做任务
  async doTask() {
    const queryObj = this.ctx.query
    const taskArray = this.ctx.request.body.data
    while (taskArray.length > 0) {
      try {
        var item = taskArray.pop()
        if (queryObj.isAll) {
          // 领取任务
          var taskId = await this.ctx.service.task.getTack(item.task_id)
          if(!taskId) {
            console.log("跳出了")
            continue
          }
        }
        if (item) {
          var _today = moment()
          var date = _today.format("YYYY-MM-DD") /*现在的时间*/
          var isexist = fs.existsSync(
            "imagesBig/" + date + "/" + item.id + ".png"
          )
          // 判断文件是否存在
          if (isexist) {
            // 压缩图片
            // fs.mkdirSync("./imageSmall/" + date);
            this.ctx.service.util.zipImage(
              "imagesBig/" + date + "/" + item.id + ".png",
              "imageSmall/" + date + "/" + item.id + "-small.jpeg"
            )
            var base64Url = await this.ctx.service.util.imgToBase64(
              "imageSmall/" + date + "/" + item.id + "-small.jpeg"
            )
            // 上传的动作了（关键）
            var uploadRet = await this.ctx.service.task.uploadImg(base64Url)
            console.log(uploadRet)
            if (uploadRet.code === "1") {
              var uploadSrc = uploadRet.data.src
              var doTaskret = await this.ctx.service.task.goTask(
                item.id,
                uploadSrc,
                "点赞"
              )
              console.log(doTaskret)
            }
          } else {
            console.log("文件不存在")
          }
          await this.ctx.service.util.sleep(2000)
        } else {
          console.log("没有找到相关数据")
        }
      } catch (err) {
        console.log(err)
      }
    }
  }
}

module.exports = HomeController
